<?php
/**
* @file IMessageService.php
* Copyright (c) Friends Group. All rights reserved.
* $Id$
*
*/

require_once(realpath(dirname(__FILE__)) . '/../classes/Message.php');

/**
 * Xử lý các vấn đề liên quan message
 */
interface IMessageService 
{

	/**
	 * @ReturnType void
	 * @ParamType senderId 
	 * @ParamType receiverId 
	 * @ParamType message 
	 * @ParamType type 
	 * Gửi message từ user này đến user khác
	 */
	public function sendUserMessage($senderId, $receiverId, $message, $type);

	/**
	 * @ReturnType classes.Message
	 * @ParamType userId 
	 * Lấy các message gửi cho user
	 */
	public function getUserMessages($userId);

	/**
	 * @ReturnType void
	 * @ParamType senderId 
	 * @ParamType roomId 
	 * @ParamType message 
	 * @ParamType type 
	 * Gửi message cho toàn room
	 */
	public function sendRoomMessage($senderId, $roomId, $message, $type);

	/**
	 * @ReturnType classes.Message
	 * @ParamType roomId 
	 * @ParamType newOnly 
	 * Lấy các messgae trong room, chỉ lấy các message mới nếu newOnly = true
	 */
	public function getRoomMessages($roomId, $newOnly = false);

	/**
	 * @ReturnType Boolean
	 * @ParamType messageId 
	 * @ParamType roomId 
	 * Kiểm tra xem message đã được user đọc chưa
	 */
	public function isNewMessage($messageId, $roomId = null);

	/**
	 * @ReturnType Object
	 * @ParamType messageId 
	 * Lấy kiểu message
	 */
	public function getMessageType($messageId);

	/**
	 * @ReturnType void
	 * @ParamType messageId 
	 * @ParamType type 
	 * Set kiểu message
	 */
	public function setMessageType($messageId, $type);

	/**
	 * @ReturnType void
	 * @ParamType userId 
	 * @ParamType message 
	 * Lưu các message của user (chỉ có tác dụng khi user bật tính tùy chọn lưu)
	 */
	public function saveUserMessage($userId, $message);

	/**
	 * @ReturnType Object
	 * @ParamType userId 
	 * Lấy các message đã lưu của user
	 */
	public function getArchivedMessages($userId);

	/**
	 * @ReturnType Object
	 * @ParamType userId 
	 * Lấy message của hệ thống, nếu userId != null sẽ lấy các message của userId
	 */
	public function getSystemMessages($userId = null);
}
?>